Visual Manipulation of a Digital Object

ABSTRACT

Visual manipulation of a digital object such as three-dimensional digital object manipulation on a two-dimensional display surface is described that overcomes the challenges of explicit specification of axis manipulation for each of the three axes one at a time. In an example, a multipoint gesture to a digital object is received on a display surface, which generates an axis of manipulation based on a position of the multipoint gesture relative to the digital object. Then a manipulation gesture is recognized, indicative of a manipulation of the digital object relative to the axis of manipulation, and a visual manipulation of the digital object about the axis of manipulation is generated based on the manipulation gesture.

RELATED APPLICATIONAS

This application is a continuation of and claims priority to U.S. pat.app. Ser. No. 16/373,489, filed 2 Apr. 2019 and titled “VisualManipulation of a Digital Object,” the disclosure of which isincorporated in its entirety by reference herein.

BACKGROUND

Manipulating three-dimensional (3D) digital objects on a two-dimensional(2D) display surface is a desired and common operation, particularlywhen producing 3D animation. Conventional graphics systems, however,provide non-intuitive processes for such manipulation that involvemultiple manual steps, such as for determining an axis of manipulationand then performing the manipulation itself. For instance, someconventional techniques require explicit specification of a manipulationaxis, one dimension at a time, and then a subsequent explicitmanipulation to input the desired manipulation itself. Otherconventional techniques provide manipulation via separate sliders orsimilar affordances for each of the three dimensions in a 3D space.Thus, such existing techniques are multi-step processes, where the axisof manipulation must be specified, one dimension at a time, and then theactual manipulation of the object must be input. Such approaches are notintuitive and are difficult for a user to discover and navigate. Inaddition, they lack the ability to fine tune a manipulation axis duringa manipulation operation. Accordingly, existing approaches formanipulating three-dimensional (3D) digital objects on a two-dimensional(2D) display surface require time consuming multi-step processes thatare not user friendly and intuitive, and thus waste user and machineresources when enabling such manipulations.

SUMMARY

Visual manipulation of a digital object is described, such asmanipulation of a 3D digital object on a 2D display surface, thatovercomes the challenges of explicit specification of an axis ofmanipulation for each of the three dimensions, one at a time. In anexample, a two point touch then spread gesture is used to generate anaxis of rotation and then a simple single finger swipe perpendicular tothe generated axis will roll a digital object in the direction of theswipe, similar to rolling a pencil along a surface.

To do so, a user touches two points on a 3D digital object displayed ona 2D display surface. The user then spreads their fingers apartpromoting a heads up (HU) display and exposing increasing levels ofcomplex manipulation depending on the proximity of the spreadingfingers. In an example embodiment, the spreading gesture generates anaxis line between the fingers and across a plane of the digital object.Depending on the size of the spreading gesture, a specific manipulationmode is activated, such as a rotation mode, and the axis of manipulationis f. The HU display can provide the user with an indication of themanipulation mode. The user may remove their fingers and using arecognized manipulation gesture indicative of a manipulation of thedigital object relative to the axis of manipulation, manipulate thedigital object about the axis. For example, in a rotation mode a singlepoint swiping gesture perpendicular to the axis of manipulation willroll or rotate the object around the axis of manipulation in thedirection of the swiping gesture. When the rotation is complete, theuser may retouch the ends of the generated axis of manipulation and bybringing their fingers together along the axis, unlock the axis andterminate the manipulation mode.

Visual manipulation of a digital object is described herein primarilywith respect to a manipulation mode determined to be a rotation mode fora 3D digital object on a 2D display surface. However, this is by way ofexample and not limitation. Techniques of visual manipulation of adigital object can also be used for any manipulation about an axis of adigital object on a display surface including but not limited to afolding mode, bending mode, creasing mode and the like. Alternately orin addition, multiple modes may be combined, for example first acreasing mode is initiated and a digital object is creased at the axisof manipulation, then a rotation mode is initiated to rotate the objectaround the axis of manipulation.

This Summary introduces a selection of concepts in a simplified formthat are further described below in the Detailed Description. As such,this Summary is not intended to identify essential features of theclaimed subject matter, nor is it intended to be used as an aid indetermining the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description is described with reference to the accompanyingfigures. Entities represented in the figures may be indicative of one ormore entities and thus reference may be made interchangeably to singleor plural forms of the entities in the discussion.

FIG. 1 is an illustration of an environment in an example implementationthat is operable to employ visual manipulation of a digital objectdescribed herein.

FIG. 2 depicts an example implementation scenario including an overviewof an example architecture and process implementing visual manipulationof a digital object.

FIG. 3 depicts an example implementation scenario for activating amanipulation mode and generating an axis of manipulation.

FIG. 4 depicts an example implementation scenario for recognizing amanipulation gesture and generating a visual manipulation of a digitalobject about an axis of manipulation.

FIG. 5 depicts an example implementation scenario for generating avisual manipulation of a digital object about an axis of manipulation.

FIG. 6 depicts an example implementation scenario for generating avisual manipulation of a digital object about an axis of manipulation.

FIG. 7a depicts an example implementation scenario for activating arotation mode based on a determination of the size of a multipointgesture.

FIG. 7b depicts an example implementation scenario for activating afolding mode based on a determination of the size of a multipointgesture.

FIG. 7c depicts an example implementation scenario for activating awrapping mode based on a determination of the size of a multipointgesture.

FIG. 8 depicts an example implementation scenario for unlocking an axisof manipulation and/or deactivating a manipulation mode.

FIG. 9 depicts a procedure in an example implementation for generating avisual manipulation of a digital object about an axis of manipulation.

FIG. 10 depicts a procedure in an example implementation for generatinga visual manipulation of a digital object about an axis of manipulation.

FIG. 11 depicts a procedure in an example procedure for unlocking anaxis of manipulation and/or deactivating an active manipulation mode.

FIG. 12 illustrates an example system including various components of anexample device that can be implemented as any type of computing deviceas described and/or utilized with reference to FIGS. 1-11 to performimplementations of techniques described herein.

DETAILED DESCRIPTION

Overview

Manipulating 3D digital objects on a 2D display surface is anincreasingly desirable feature in many software application packages.For example, manipulation of a 3D digital object on a 2D display surfaceis typically leveraged when producing 3D animation. However,conventional techniques require explicit specification of a manipulationaxis, one dimension at a time, then an explicit rotation dialog to inputthe desired manipulation itself. Further, these approaches are not veryintuitive and do not feel natural, as they do not incorporate the finemotor skills of the human hand, but instead require tedious multistepinputs. In addition, they lack the ability to fine tune the axis ofmanipulation during the manipulation operation. Thus, conventionalapproaches are burdensome on user and machine resources.

Accordingly, visual manipulation of a digital object is described thatovercomes the challenges of explicit specification of an axis ofmanipulation and allows for complex manipulation to be carried out in avery multi-touch friendly intuitive way. The degree of manipulation caneasily be adjusted by using the fine-grained hand control humansnaturally have, and the axis of manipulation can be adjusted by simplyspecifying another pair of touch points. In implementation, a two pointtouch and spread gesture is used to generate an axis of manipulation. Amanipulation gesture may then be recognized that is indicative of amanipulation of the digital object relative to the axis of manipulation.A visual manipulation of the digital object about the axis ofmanipulation is then generated based on the manipulation gesture appliedaccording to the activated manipulation mode.

For example, when a 3D digital object is displayed on a 2D displaysurface, a user touches two points with two fingers within a plane ofthe 3D digital object, these two points may be referred to as points Aand B. A vector is created from A to B and is generated on the screen asa visible representation of the axis of manipulation. As the user movestheir fingers around, the points are rearranged on the plane of thedigital object and the axis AB is updated. When the user spreads theirfingers apart along AB, the interface updates and the object goes into amanipulation mode dependent on the size of the spreading gesture, ordistance created between A and B. When the size reaches a particulardistance and the spreading gesture stops, points A and B are locked andthe mode of manipulation is activated. To unlock the axis ofmanipulation and terminate the activated mode of manipulation, the usersimply retouches points A and B, and moves their fingers together alongAB, at which point A and B can be repositioned and relocked for anothermanipulation session if desired. To prevent the digital object fromimmediately being manipulated, for example rolling immediately when inrotation mode, before the axis has been exactly placed, the width of theaxis on the screen is to be used to enable or disable manipulationmodes.

In rotation manipulation mode, moving the fingers perpendicular to ABapplies a rotation to the digital object along the projected AB axis inthe direction of the perpendicular movement. The rolling distance iscoupled to the amount of perpendicular travel of the fingers. Any othermovement, apart from the aforementioned move to bring the touch pointscloser together, will rotate the object along an axis that isperpendicular to the object plane and centered around the midpoint ofthe AB axis.

When the desired rotation is complete, the user can retouch points A andB and by bringing their fingers together along the AB axis, the axis ofmanipulation is unlocked and the generated visible representation of theaxis of manipulation disappears upon removal of the fingers from thepoints A and B, completing a manipulation sequence.

Thus, in contrast with conventional techniques for visual manipulationof objects, the techniques described herein reduce the machineinteractions and user inputs required for visual manipulation, providinga marked improvement over conventional techniques.

In the following discussion, an example environment is described thatmay employ the techniques described herein. Example procedures are alsodescribed which may be performed in the example environment as well asother environments. Consequently, performance of the example proceduresis not limited to the example environment and the example environment isnot limited to performance of the example procedures.

Example Environment

FIG. 1 is an illustration of a digital medium environment 100 in anexample implementation that is operable to employ visual manipulation ofa digital object. The illustrated environment 100 includes a computingdevice 102 including a display surface 104. The computing device 102 isequipped with a visual manipulation system 106 that embodies a gesturerecognition module 108 and a visual manipulation module 110 to implementcorresponding functionality described herein. Generally, the visualmanipulation system 106 is representative of functionality to recognizedifferent gestures and to perform different visual manipulations ofdigital objects based on the recognized gestures.

The computing device 102, for instance, may be configured as a desktopcomputer, a laptop computer, a mobile device (e.g., assuming a handheldconfiguration such as a tablet or mobile phone as illustrated), and soforth. Thus, the computing device 102 may range from full resourcedevices with substantial memory and processor resources (e.g., personalcomputers, game consoles) to a low-resource device with limited memoryand/or processing resources (e.g., mobile devices). Additionally,although a single computing device 102 is shown, the computing device102 may be representative of a plurality of different devices, such asmultiple servers utilized by a business to perform operation “over thecloud” as described in FIG. 12.

In operation, the gesture recognition module 108 may be executed torecognize touch input gestures received by the display surface 104 ofcomputing device 102. For example, consider that a user touches twopoints on the display surface 104 relative to a digital object and movestheir fingers apart in a spreading gesture. The gesture recognitionmodule 108 recognizes the spreading gesture and accordingly generates anaxis of manipulation relative to the digital object and activates amanipulation mode for manipulating the digital object relative to theaxis. While in the manipulation mode, the user inputs a manipulationgesture to the display surface 104 indicative of a command to visuallymanipulate the digital object relative to the generated axis ofmanipulation. Accordingly, the gesture recognition module 108 recognizesthe manipulation gesture, and causes the visual manipulation module 110to generate a corresponding visual manipulation of the digital objectrelative to the axis of manipulation. For example, a swiping fingergesture made perpendicular to the axis of manipulation, when in arotation mode, will initiate a rotation of the digital object about theaxis of manipulation. In a further implementation, the user brings theirfingers together in a contracting gesture relative to the generated axisof manipulation. The gesture recognition module 108 recognizes thecontracting gesture and unlocks the manipulation mode and terminates themanipulation sequence.

As indicated above, when the gesture recognition module 108 recognizesthe manipulation gesture, the visual manipulation module 110 generatesthe corresponding visual manipulation of the digital object based on themanipulation gesture applied according to the activated manipulationmode. For example, continuing the above example of the rotation mode,when the finger swipe gesture perpendicular to the axis of manipulationis made, the gesture recognition module 108 recognizes this gesture as arequest for rotation about the axis of manipulation and communicates acorresponding notification to the visual manipulation module 110. Inresponse, the visual manipulation module 110 will then display thecorresponding visual manipulation in accordance with the activemanipulation mode. For instance, in a rotation mode, the digital objectwill rotate around the axis of manipulation in the direction of theswiping gesture.

The environment 100 further depicts a service provider 112, configuredto communicate with the computing device 102 over a network 114, such asthe Internet, to provide a “cloud-based” computing environment. Theservice provider 112 is further illustrated as including a visualmanipulation service 116. Generally, the visual manipulation service 116may be configured to perform functionality that is described herein inrelation to the visual manipulation system 106, such as a web-basedservice. Further, the visual manipulation service 116 may be configuredto distribute the gesture recognition module 108 and the visualmanipulation module 110 for downloading over the network 114.

In general, functionality, features, and concepts described in relationto the examples above and below may be employed in the context of theexample procedures described in this section. Further, functionality,features, and concepts described in relation to different figures andexamples in this document may be interchanged among one another and arenot limited to implementation in the context of a particular figure orprocedure. Moreover, blocks associated with different representativeprocedures and corresponding figures herein may be applied togetherand/or combined in different ways. Thus, individual functionality,features, and concepts described in relation to different exampleenvironments, devices, components, figures, and procedures herein may beused in any suitable combinations and are not limited to the particularcombinations represented by the enumerated examples in this description.

Systems and Techniques

The following discussion describes example implementation scenarios andprocedures for visual manipulation of a digital object. Aspects of eachof the scenarios and procedures may be implemented in hardware,firmware, software, or a combination thereof. The procedures are shownas a set of blocks that specify operations performed by one or moredevices and are not necessarily limited to the orders shown forperforming the operations by the respective blocks.

FIG. 2 depicts an implementation scenario 200 including an overview ofan example architecture and process for performing techniques for visualmanipulation of a digital object. In the scenario 200, a user inputs amultipoint gesture 202 relative to a digital object 204, such as on thedisplay surface 104 of the computing device 102. The multipoint gesture202, for instance, is applied to the digital object 204 itself, and/oradjacent the digital object 204. The gesture recognition module 108detects the multipoint gesture 202, and determines a size 206 of themultipoint gesture 202 and a position 208 of the multipoint gesture 202in relation to the digital object 204. Based on the size 206 of themultipoint gesture 202, the gesture recognition module 108 activates amanipulation mode 210 that correlates to the size 206 of the gesture.For instance, the gesture recognition module 108 maintains gesture modemappings 212 that represent data that maps different gesture sizes todifferent manipulation modes. Thus, to activate the manipulation mode210, the gesture recognition module 108 correlates the gesture size 206to the manipulation mode 210 in the gesture mode mappings 212.Generally, the gesture size 206 may be determined in various ways, suchas in pixels, screen distance on the display surface 104 (e.g., inmillimeters), percentage of the display surface 104 spanned by themultipoint gesture 202, and so forth. Further, an axis of manipulation214 for the digital object 204 is generated based on the position 208 ofthe multipoint gesture 202 relative to the digital object 204.

After the manipulation mode 210 is activated and the axis ofmanipulation 214 is generated, a manipulation gesture 216 is receivedfrom the user. The user, for instance, applies the manipulation gesture216 to the display surface 104. The gesture recognition module 108detects the manipulation gesture 216 and performs a gesture recognition218 which recognizes the manipulation gesture 216 as being indicative ofa manipulation of the digital object 204 relative to the axis ofmanipulation 214 and according to the manipulation mode 210.Accordingly, the gesture recognition module 108 generates a manipulationevent 220 and communicates the manipulation event 220 to the visualmanipulation module 110. Generally, the manipulation event 220 includesdata that specifies parameters to be applied for manipulating thedigital object 204. For instance, the manipulation event 220 specifies atype of visual manipulation to be applied to the digital object 204based on the manipulation mode 210, such as rotation, folding, wrapping,and/or other type of visual manipulation. The manipulation event 220 mayalso specify an amount of visual manipulation to be applied to thedigital object 204, such as a degree of rotation, an angle of folding,how tightly the digital object 204 is to be wrapped about the axis ofmanipulation 214, and so forth.

Further to the scenario 200, the visual manipulation module 110 receivesthe manipulation event 220 and applies a visual manipulation 222 to thedigital object 204 to generate a transformed digital object 224according to the parameters specified by the manipulation event 220. Thedigital object 204, for instance, is transformed based on a type ofvisual manipulation specified by the manipulation mode 210 and an amountof manipulation specified by the manipulation event 220 to generate thetransformed digital object 224. In at least some implementations, thetransformed digital object 224 is then displayed on the display surface104 of the computing device 102.

FIGS. 3 and 4 depict example scenarios that provide detailed operationsof aspects of visual manipulation of a digital object. Generally,different aspects of the scenarios can be performed by the visualmanipulation system 106. The scenarios, for instance, represent visualimplementations of the scenario 200 described above.

FIG. 3 depicts an example scenario 300 for inputting a multipointgesture to activate a manipulation mode and generate the axis ofmanipulation referenced above. The scenario 300 depicts a user applyingtouch input to the display surface 104 to generate the multipointgesture 202. The multipoint gesture 202, for instance, is appliedoverlaying and/or adjacent to the digital object 204 displayed on thedisplay surface 104. In this particular example, the multipoint gesture202 is applied with two fingers (e.g., a thumb and a forefinger) atpoints 302 a and 302 b of the display surface 104 and by moving thefingers in opposite directions in a spreading gesture. As the userspreads their fingers apart relative to (e.g., across) the digitalobject 204 to generate the multipoint gesture 202, the axis ofmanipulation 214 is generated between the fingers. Further, the size 206of the multipoint gesture 202 is determined. The size 206, for instance,is based on a distance between the user's fingers (e.g., between thethumb and forefinger) and is used to determine which manipulation modeis to be activated. In this particular example, the gesture recognitionmodule 108 actives the manipulation mode 210 based on determining thesize 206 of the multipoint gesture 202.

Further to the scenario 300, the visual manipulation system 106 displaysa heads-up notification 304 that provides an indication of an activemanipulation mode when a manipulation mode is activated, which in thiscase is the manipulation mode 210. In this example the heads-upnotification 304 identifies the manipulation mode 210 via a textnotification. Alternately or in addition, the heads-up notification 304may be provided to the user by a different type of notification, such asan icon, in a user interface menu, an audible notification, a tactilenotification, and so on.

FIG. 4 depicts an example scenario 400 for generating a visualmanipulation of a digital object about an axis of manipulation based ona manipulation gesture applied according to the activated manipulationmode, which in this example is a rotation mode. The scenario 400, forinstance, represents a continuation of the scenario 300, above. In thescenario 400, a user applies touch input to the display surface 104 ofthe computing device 102 to generate the manipulation gesture 216. Theuser, for example, applies the touch input with their finger (e.g.,forefinger) at single touchpoint 402 and drags their finger in a swipinggesture perpendicular to the axis of manipulation 214 to generate themanipulation gesture 216. The gesture recognition module 108 recognizesthe manipulation gesture 216 via the gesture recognition 218 andnotifies the visual manipulation module 110 of the manipulation gesture216, such as via the manipulation event 220.

As the user drags their finger, the digital object 204 rotates aroundthe axis of manipulation 214 in the direction of the swiping gesture asshown to generate the transformed digital object 224. In addition, theamount of rotation is coupled to the distance traveled by the user'sfinger during the manipulation gesture 216.

Further to the scenario 400, the visual manipulation system 106 displaysa heads-up notification 404 that identifies the currently activemanipulation mode, i.e., a rotation mode. Similar to the heads-upnotification 304, the heads-up notification 404 may take various formsincluding visible, audible, and/or tactile notifications.

FIGS. 5, 6, 7 a, 7 b,7 c, and 8 depict additional example scenarios forvisual manipulation of a digital object. The scenarios, for instance,represent visual implementations of the scenario 200 described above.FIG. 5 depicts an example scenario 500 which illustrates another exampleof the manipulation mode 210 in a rotation mode, similar to the exampleillustrated in FIG. 4. In the scenario 500, however, the axis ofmanipulation 214 has been repositioned relative to the digital object204. As described below in the scenario 800, for instance, the axis ofmanipulation 214 is unlocked from its position in the scenario 400 andnewly generated in the position depicted in the scenario 500. Forexample, in the scenario 400 above, the axis of manipulation ispositioned longitudinally (e.g., is a longitudinal axis) relative to ageometry of the digital object 204. In the scenario 500, however, theaxis of manipulation 214 is positioned laterally (e.g., is a lateralaxis) relative to the geometry of the digital object 204.

Accordingly, in the scenario 500, the manipulation gesture 216 causesthe digital object 204 to be rotated around the repositioned axis ofmanipulation 214 as shown.

FIG. 6 depicts an example implementation scenario 600 in which amanipulation mode other than rotation is active. In the scenario 600,the manipulation mode 210 is activated as a folding mode. Accordingly,the manipulation gesture 216 causes the digital object 204 to be foldedover the axis of manipulation 214 with the manipulation mode 210activated as a folding mode. In at least one implementation, the degreeto which the digital object 204 is folded about the axis of manipulation214 is based on a length of the manipulation gesture 216 on the displaysurface 104. Further, a heads-up notification 602 identifies the activefolding mode.

In some embodiments, as a multipoint gesture increases in size,increasingly complex manipulation modes are activated. Generally, thesize of a multipoint gesture is determined by the proximity oftouchpoints of the gesture (e.g., fingers) to one another in themultipoint gesture. FIGS. 7a, 7b, and 7c depicts example implementationscenarios for activating different manipulation modes based on adetermination of the size of a multipoint gesture.

FIG. 7a illustrates an example scenario 700 a where the manipulationmode is a rotation mode that is activated based on the size of amultipoint gesture 702 a. To generate the multipoint gesture 702 a, auser positions two fingers at points 704 a and 706 a relative to (e.g.,overlaying and/or adjacent) a digital object 708 and spreads them apartto activate a rotation mode 710 a. Further, points 704 a and 706 a arespread apart across the digital object 708 generating an axis ofmanipulation 712. In this narrowest configuration, the size of themultipoint gesture 702 a (e.g., the distance between the points 704 aand 706 a) is determined to activate the rotation mode 710 a.

FIG. 7b illustrates an example scenario 700 b where the manipulationmode is a folding mode that is activated based on a size of a multipointgesture 702 b. The multipoint gesture 702 b or instance, represents acontinuation of the multipoint gesture 702 a. To generate the multipointgesture 702 b, a user positions two fingers at points 704 b and 706 brelative to the digital object 708 to activate a folding mode 710 b. Forinstance, user placement of fingers at the points 704 b and 706 brepresents a spreading gesture from the points 704 a and 706 a of themultipoint gesture 702 a. In this particular example, the multipointgesture 702 b expands the axis of manipulation 712 to cause the axis ofmanipulation 712 to be wider than in the rotation mode 710 aconfiguration. Generally, the size of the multipoint gesture 702 b(e.g., the distance between the points 704 b and 706 b) causesactivation of the folding mode 710 b.

FIG. 7c illustrates an example scenario 700 c where the manipulationmode is a wrapping mode, where the object can be wrapped or rolled uparound the axis of manipulation. In the scenario 700 b, a user generatesa multipoint gesture 702 c by positioning two fingers at points 704 cand 706 c relative to the digital object 708 to activate a wrapping mode710 c. The multipoint gesture 702 c, for instance, represents acontinuation of the multipoint gesture 702 a and/or the multipointgesture 702 b. For instance, user placement of fingers at the points 704c and 706 c represents a spreading gesture from the points 704 b and 706b of the multipoint gesture 702 b. In this particular example, themultipoint gesture 702 c expands the axis of manipulation 712 to causethe axis of manipulation 712 to be wider than in the folding mode 710 bconfiguration. Generally, the size of the multipoint gesture 702 c(e.g., the distance between the points 704 c and 706 c) causesactivation of the wrapping mode 710 c.

In the wrapping mode 710 c, a manipulation gesture (e.g., themanipulation gesture 216) causes the digital object 708 to wrap aroundthe axis of manipulation 712 in a circular and/or spiral wrappingpattern. Further, while in the wrapping mode 710 c, a size of amanipulation gesture determines an extent to which the digital object708 is wrapped around the axis of manipulation 712. For instance, thelonger the manipulation gesture, the tighter or more closely the digitalobject 708 is wrapped about the axis of manipulation 712.

Accordingly, the scenarios 700 a-700 c demonstrates that techniques forvisual manipulation of a digital object can be employed to exposedifferent types and/or complexities of visual manipulations. Forinstance, a single multipoint gesture can progressively activatedifferent visual manipulation modes as the multipoint gesture expandsand/or contracts and based on varying distances between contact pointsof the multipoint gesture.

FIG. 8 depicts an example implementation scenario 800 for unlocking anaxis of manipulation and/or deactivating a manipulation mode. In theupper portion of the scenario 800, a rotation manipulation mode isactive such that a manipulation gesture can be applied to the displaysurface 104 to rotate the digital object 204 about the axis ofmanipulation 214, such as described previously.

Proceeding to the lower portion of the scenario 800, a user applies anunlock gesture 802 to the axis of manipulation 214, such as overlayingor adjacent to the axis of manipulation 214. The unlock gesture 802involves the user placing two fingers on a touchpoint 804 and atouchpoint 806 of the axis of manipulation 214, respectively, andcontracting their fingers inward relative to the axis of manipulation214. In response to detecting the unlock gesture 802, the gesturerecognition module 108 generates an unlock event 808 which causes theaxis of manipulation 214 to be unlocked from its current position suchthat it can be moved to a different position relative to the digitalobject 204. Alternatively or additionally, the unlock event 808 causesthe axis of manipulation 214 to be removed and the current manipulationmode to be deactivated.

Example Procedures

This section describes with reference to FIGS. 9-11 example proceduresrelating to facilitating visual manipulation of a digital object in oneor more implementations. Aspects of the procedures may be implemented inhardware, firmware, or software, or a combination thereof. Theprocedures are shown as sets of blocks specifying operations that may beperformed by one or more devices, but performance of the operations isnot necessarily limited to the orders as shown by the respective blocksor as described herein, for the operations may be performed in otherorders or in fully or partially overlapping manners. In at least someimplementations, the procedures may be performed by a suitablyconfigured device, such as an example computing device 102 of FIG. 1 or1202 of FIG. 12 using a gesture recognition module 108 and a visualmanipulation module 110 of FIGS. 1 and 12.

FIG. 9 is a flow diagram that illustrates an example procedure 900 forfacilitating visual manipulation of a digital object in accordance withone or more example implementations. At block 902, a user input of amultipoint gesture to a digital object displayed on a display surface isreceived. For example, the display surface 104 of the computing device102 receives a two finger touch spreading gesture as illustrated in FIG.3. As part of the spreading gesture, for instance, user touches thedigital object 204 on the display surface 104 with their thumb andforefinger at touchpoints 302 a and 302 b, respectively. The user thenmoves their thumb and forefinger in opposite direction in a spreadinggesture to input the multipoint gesture.

At block 904, an axis of manipulation for the digital object isgenerated based on a position of the multipoint gesture relative to thedigital object. For example, as depicted in FIG. 3, when the usertouches the digital object 204, in this case a playing card, with boththeir thumb and forefinger at points 302 a and 302 b and moves theirthumb and forefinger in opposite directions in a spreading gesture, anaxis of manipulation 214 is generated between the two touchpoints 302 aand 302 b and on the digital object 204 as shown.

At block 906, a manipulation gesture indicative of a manipulation of thedigital object relative to the axis of manipulation is recognized. Forexample, as depicted in FIG. 4, using their forefinger, a user touchesdisplay surface 104 at touchpoint 402 and makes a swiping gestureperpendicular to the axis of manipulation 214 as shown. Thisperpendicular swiping gesture is recognized as a rotation gesture whenin a rotation mode, for example, and intended to rotate the digitalobject 204 around the axis of manipulation 214.

At block 908, a visual manipulation of the digital object about the axisof manipulation is generated based on the manipulation gesture. Forexample, referring to FIG. 4, when a user touches the display surface104 at touchpoint 402 and makes the swiping gesture perpendicular to theaxis of manipulation 214, the digital object 204 is rotated around theaxis of manipulation 214 as shown.

FIG. 10 is a flow diagram that illustrates an example procedure 1000 forfacilitating visual manipulation of a digital object in accordance withone or more example implementations. At block 1002, a user's input of amultipoint gesture to a digital object displayed on a display surface isreceived, and an axis of manipulation for the digital object isgenerated based on a position of the multipoint gesture relative to thedigital object. For instance, a display surface of a computing devicecan receive a multipoint gesture from a user touching the digitalobject, displayed on the display surface, from which an axis ofmanipulation is generated between the multiple points and on the digitalobject. For example, the display surface 104 of the computing device 102can receive a two finger touch spreading gesture at touchpoints 302 aand 302 b as illustrated in FIG. 3. As the user moves their thumb andforefinger in opposite direction in a spreading gesture as shown, anaxis of manipulation 214 is generated between the two touchpoints 302 aand 302 b and on the digital object 204.

At block 1004, a size of the multipoint gesture is determined and amanipulation mode activated based on the size of the multipoint gesture.For example, when a user moves their fingers apart in a spreadinggesture the size of the finger spread gesture is determined and based onthe size, a particular manipulation mode is activated as shown in FIGS.7a, 7b, and 7c . For instance, a manipulation mode such as a rotationmode shown in FIG. 7a may be activated. Alternately or in addition, afolding, bending, wrapping or creasing mode may be activated dependingon the size of the multipoint gesture. For example, FIG. 6 shows anobject 204 being folded over the axis of manipulation 214 when a foldingmode is activated.

At block 1006, a visual indication of the manipulation mode is exposed.For example, text describing the manipulation mode, such as rotationmode, is visible on the display surface. The heads-up notification 404,for instance, illustrated in FIG. 4 indicates by text that themanipulation mode is a rotation mode. Alternately or in addition, otherindications may be exposed, such as icons, color coding, audibleindications, and so forth.

At block 1008, a manipulation gesture indicative of a manipulation ofthe digital object relative to the axis of manipulation is recognized.For example, in FIG. 4, when in the rotation mode, a swiping gesture ismade perpendicular to the axis of manipulation 214. The gesturerecognition module 108 recognizes the gesture as a rotation gesture andthus generates the manipulation event 220 that includes variousparameters for a rotating manipulation of the digital object 204.

At block 1010, a visual manipulation of the digital object about theaxis of manipulation is generated based on the manipulation gestureapplied according to the activated manipulation mode. For example, whenthe rotation mode is activated and the user makes the perpendicularswiping gesture shown in FIG. 4, the digital object 204 is rotatedaround the axis of manipulation 214 in the direction of the swipinggesture as shown. In at least one implementation, the rotating visualmanipulation is performed by the visual manipulation module 110 andbased on manipulation parameters specified by the manipulation event220.

FIG. 11 is a flow diagram that illustrates an example procedure 1100 forunlocking an axis of manipulation and/or deactivating an activemanipulation mode in accordance with one or more exampleimplementations. At block 1102, an unlock gesture is detected relativeto an axis of manipulation of a digital object. A user, for instance,applies an unlock gesture relative to an axis of manipulation while amanipulation mode is active, such as depicted in FIG. 8.

At block 1104, an unlock event is generated that includes parameters tobe applied for unlocking the axis of manipulation. For example, thegesture recognition module 108 recognizes the unlock gesture andgenerates the unlock event as a data event that includes parameters forunlocking the axis of manipulation. The parameters, for instance,specify that the axis of manipulation is to be unlocked and made movableto different positions relative to the digital object. Alternatively orin addition, the parameters specify that the axis of manipulation is tobe removed and/or that a current manipulation mode is to be deactivated.

At block 1106, the unlock event is applied to perform one or more ofunlocking the axis of manipulation or deactivating a currentmanipulation mode. The gesture recognition module 108, for instance,applies the unlock event to enable the axis of manipulation to bemovable to a different position relative to the digital object.Alternatively or in addition, the gesture recognition module 108 appliesthe unlock event to remove the axis of manipulation and/or deactivate acurrent manipulation mode. In an implementation where a currentmanipulation mode is deactivated, a user may subsequently apply afurther multipoint gesture to active a further manipulation mode, suchas using the techniques described herein.

Having described example procedures in accordance with one or moreimplementations, consider now an example system and device that can beutilized to implement the various schemes and techniques describedherein.

Example System and Device

FIG. 12 illustrates an example system generally at 1200 that includes anexample computing device 1202 that is representative of one or morecomputing systems and/or devices that may implement the varioustechniques described herein. This is illustrated through inclusion ofthe visual manipulation system 106 including gesture recognition module108 and visual manipulation module 110 which may operate as describedherein above. The computing device 1202 may be, for example, a server ofa service provider, a device associated with a client (e.g., a clientdevice), an on-chip system, and/or any other suitable computing deviceor computing system.

In example implementations, the gesture recognition module 108 and thevisual manipulation module 110 can be executing within a housing of thecomputing device 1202 or alternately they may be executing in the cloud(e.g., on a server or network-side computing device). Alternately, aportion of the gesture recognition module 108 and visual manipulationmodule 110 can be executing at both a client-side computing device and aserver-side computing device. In such an implementation, the operationsimplemented by the gesture recognition module 108 and visualmanipulation module 110 as described herein may be distributed across aclient-server architecture.

The example computing device 1202 as illustrated includes a processingsystem 1204, one or more computer-readable media 1206, and one or moreI/O interface 1208 that are communicatively coupled, one to another.Although not shown, the computing device 1202 may further include asystem bus or other data and command transfer system that couples thevarious components, one to another. A system bus can include any one orcombination of different bus structures, such as a memory bus or memorycontroller, a peripheral bus, a universal serial bus, and/or a processoror local bus that utilizes any of a variety of bus architectures. Avariety of other examples are also contemplated, such as control anddata lines.

The processing system 1204 is representative of functionality to performone or more operations using hardware. Accordingly, the processingsystem 1204 is illustrated as including hardware elements 1210 that maybe configured as processors, functional blocks, and so forth. This mayinclude implementation in hardware as an application specific integratedcircuit or other logic device formed using one or more semiconductors.The hardware elements 1210 are not limited by the materials from whichthey are formed or the processing mechanisms employed therein. Forexample, processors may be comprised of semiconductor(s) and/ortransistors (e.g., electronic integrated circuits (ICs)). In such acontext, processor-executable instructions may beelectronically-executable instructions.

The computer-readable storage media 1206 is illustrated as includingmemory/storage 1212. The memory/storage 1212 represents memory/storagecapacity associated with one or more computer-readable media. Thememory/storage component 1212 may include volatile media (such as randomaccess memory (RAM)) and/or nonvolatile media (such as read only memory(ROM), Flash memory, optical disks, magnetic disks, and so forth). Thememory/storage component 1212 may include fixed media (e.g., RAM, ROM, afixed hard drive, and so on) as well as removable media (e.g., Flashmemory, a removable hard drive, an optical disc, and so forth). Thecomputer-readable media 1206 may be configured in a variety of otherways as further described below.

Input/output interface(s) 1208 are representative of functionality toallow a user to enter commands and information to computing device 1202,and also allow information to be presented to the user and/or othercomponents or devices using various input/output devices. Examples ofinput devices include a keyboard, a cursor control device (e.g., amouse), a microphone, a scanner, touch functionality (e.g., capacitiveor other sensors that are configured to detect physical touch), a camera(e.g., which may employ visible or non-visible wavelengths such asinfrared frequencies to recognize movement as gestures that do notinvolve touch), and so forth. Examples of output devices include adisplay device (e.g., a monitor or projector), speakers, a printer, anetwork card, tactile-response device, and so forth. Thus, the computingdevice 1202 may be configured in a variety of ways as further describedbelow to support user interaction.

Various techniques may be described herein in the general context ofsoftware, hardware elements, or program modules. Generally, such modulesinclude routines, programs, objects, elements, components, datastructures, and so forth that perform particular tasks or implementparticular abstract data types. The terms “module,” “functionality,” and“component” as used herein generally represent software, firmware,hardware, or a combination thereof. The features of the techniquesdescribed herein are platform-independent, meaning that the techniquesmay be implemented on a variety of commercial computing platforms havinga variety of processors.

An implementation of the described modules and techniques may be storedon or transmitted across some form of computer-readable media. Thecomputer-readable media may include a variety of media that may beaccessed by the computing device 1202. By way of example, and notlimitation, computer-readable media may include “computer-readablestorage media” and “computer-readable signal media.”

“Computer-readable storage media” may refer to media and/or devices thatenable persistent and/or non-transitory storage of information incontrast to mere signal transmission, carrier waves, or signals per se.Computer-readable storage media do not include signals per se. Thecomputer-readable storage media includes hardware such as volatile andnon-volatile, removable and non-removable media and/or storage devicesimplemented in a method or technology suitable for storage ofinformation such as computer readable instructions, data structures,program modules, logic elements/circuits, or other data. Examples ofcomputer-readable storage media may include, but are not limited to,RANI, ROM, EEPROM, flash memory or other memory technology, CD-ROM,digital versatile disks (DVD) or other optical storage, hard disks,magnetic cassettes, magnetic tape, magnetic disk storage or othermagnetic storage devices, or other storage device, tangible media, orarticle of manufacture suitable to store the desired information andwhich may be accessed by a computer.

“Computer-readable signal media” may refer to a signal-bearing mediumthat is configured to transmit instructions to the hardware of thecomputing device 1202, such as via a network. Signal media typically mayembody computer readable instructions, data structures, program modules,or other data in a modulated data signal, such as carrier waves, datasignals, or other transport mechanism. Signal media also include anyinformation delivery media. The term “modulated data signal” means asignal that has one or more of its characteristics set or changed insuch a manner as to encode information in the signal. By way of example,and not limitation, communication media include wired media such as awired network or direct-wired connection, and wireless media such asacoustic, RF, infrared, and other wireless media.

As previously described, hardware elements 1210 and computer-readablemedia 1206 are representative of modules, programmable device logicand/or fixed device logic implemented in a hardware form that may beemployed in some embodiments to implement at least some aspects of thetechniques described herein, such as to perform one or moreinstructions. Hardware may include components of an integrated circuitor on-chip system, an application-specific integrated circuit (ASIC), afield-programmable gate array (FPGA), a complex programmable logicdevice (CPLD), and other implementations in silicon or other hardware.In this context, hardware may operate as a processing device thatperforms program tasks defined by instructions and/or logic embodied bythe hardware as well as a hardware utilized to store instructions forexecution, e.g., the computer-readable storage media describedpreviously.

Combinations of the foregoing may also be employed to implement varioustechniques described herein. Accordingly, software, hardware, orexecutable modules may be implemented as one or more instructions and/orlogic embodied on some form of computer-readable storage media and/or byone or more hardware elements 1210. The computing device 1202 may beconfigured to implement particular instructions and/or functionscorresponding to the software and/or hardware modules. Accordingly,implementation of a module that is executable by the computing device1202 as software may be achieved at least partially in hardware, e.g.,through use of computer-readable storage media and/or hardware elements1210 of the processing system 1204. The instructions and/or functionsmay be executable/operable by one or more articles of manufacture (forexample, one or more computing devices 1202 and/or processing systems1204) to implement techniques, modules, and examples described herein.

The techniques described herein may be supported by variousconfigurations of the computing device 1202 and are not limited to thespecific examples of the techniques described herein. This functionalitymay also be implemented all or in part through use of a distributedsystem, such as over a “cloud” 1214 via a platform 1216 as describedbelow.

The cloud 1214 includes and/or is representative of a platform 1216 forresources 1218. The platform 1216 abstracts underlying functionality ofhardware (e.g., servers) and software resources of the cloud 1214. Theresources 1218 may include applications and/or data that can be utilizedwhile computer processing is executed on servers that are remote fromthe computing device 1202. Resources 1218 can also include servicesprovided over the Internet and/or through a subscriber network, such asa cellular or Wi-Fi network.

The platform 1216 may abstract resources and functions to connect thecomputing device 1202 with other computing devices. The platform 1216may also serve to abstract scaling of resources to provide acorresponding level of scale to encountered demand for the resources1218 that are implemented via the platform 1216. Accordingly, in aninterconnected device embodiment, implementation of functionalitydescribed herein may be distributed throughout the system 1200. Forexample, the functionality may be implemented in part on the computingdevice 1202 as well as via the platform 1216 that abstracts thefunctionality of the cloud 1214.

Conclusion

Although the invention has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the invention defined in the appended claims is not necessarilylimited to the specific features or acts described. Rather, the specificfeatures and acts are disclosed as example forms of implementing theclaimed invention.

What is claimed is:
 1. A method for visually manipulating a digitalobject implemented by at least one computing device in a digital visualmanipulation environment, the method comprising: receiving, by the atleast one computing device, user input of an activation gesture relativeto the digital object displayed on a display surface; generating, by theat least one computing device, an axis of manipulation for the digitalobject based on a position of the activation gesture relative to thedigital object; activating, by the at least one computing device, one ofmultiple manipulation modes that each indicate a different type ofmotion of the digital object relative to the axis of manipulation basedon a length of the activation gesture; detecting, by the at least onecomputing device, removal of the activation gesture, the activatedmanipulation mode remaining active when the activation gesture isremoved; and receiving, by the at least one computing device, user inputof a manipulation gesture causing a visual manipulation of the digitalobject relative to the axis of manipulation based on the activatedmanipulation mode.
 2. The method as described in claim 1, wherein theaxis of manipulation is locked at the position of the activation gesturerelative to the digital object after detecting the removal of theactivation gesture.
 3. The method as described in claim 1, wherein theactivated manipulation mode is a wrapping mode, and the visualmanipulation is a wrapping of the digital object around the axis ofmanipulation.
 4. The method as described in claim 1, wherein a degree towhich the digital object is visually manipulated relative to the axis ofmanipulation is based on a length of the manipulation gesture.
 5. Themethod as described in claim 1, wherein a direction that the digitalobject is visually manipulated relative to the axis of manipulationcorresponds to a direction of the manipulation gesture.
 6. The method asdescribed in claim 1, further comprising: receiving, by the at least onecomputing device, user input of an unlock gesture to the axis ofmanipulation visible on the display surface, the unlock gesture enablingmovement of the axis of manipulation to a different position relative tothe digital object.
 7. The method as described in claim 6, furthercomprising: receiving, by the at least one computing device, user inputof a reposition gesture to the axis of manipulation visible on thedisplay surface, the reposition gesture moving the axis of manipulationto the different position relative to the digital object, and inresponse, generating the axis of manipulation at the different positionrelative to the digital object.
 8. The method as described in claim 1,further comprising: receiving, by the at least one computing device,user input of a removal gesture to the axis of manipulation visible onthe display surface, the removal gesture terminating the activatedmanipulation mode and removing the axis of manipulation.
 9. In a digitalvisual environment for visually manipulating a digital object, a systemto manipulate the digital object relative to an axis of manipulation,the system comprising: one or more processors; and one or morecomputer-readable storage media storing instructions that are executableby the one or more processors to: receive user input of an activationgesture relative to the digital object displayed on a display surface;generate the axis of manipulation for the digital object based on aposition of the activation gesture relative to the digital object;activate one of multiple manipulation modes that each indicate adifferent type of motion of the digital object relative to the axis ofmanipulation based on a length of the activation gesture; detect removalof the activation gesture, the activated manipulation mode remainingactive when the activation gesture is removed; and receive user input ofa manipulation gesture that causes a visual manipulation of the digitalobject relative to the axis of manipulation based on the activatedmanipulation mode.
 10. The system as described in claim 9, wherein theaxis of manipulation is locked at the position of the activation gesturerelative to the digital object after detection of the removal of theactivation gesture.
 11. The system as described in claim 9, wherein theactivated manipulation mode is a wrapping mode, and the visualmanipulation of the digital object causes the digital object to bewrapped around the axis of manipulation.
 12. The system as described inclaim 9, wherein a degree to which the digital object is visuallymanipulated relative to the axis of manipulation is based on a length ofthe manipulation gesture.
 13. The system as described in claim 9,wherein a direction that the digital object is visually manipulatedrelative to the axis of manipulation corresponds to a direction of themanipulation gesture.
 14. The system as described in claim 9, whereinthe instructions are further executable by the one or more processors toreceive user input of an unlock gesture to the axis of manipulationvisible on the display surface that causes movement of the axis ofmanipulation to be enabled.
 15. The system as described in claim 14,wherein the instructions are further executable by the one or moreprocessors to receive user input of a reposition gesture to the axis ofmanipulation visible on the display surface that moves the axis ofmanipulation to a different position relative to the digital object, andin response, causes the axis of manipulation to be generated at thedifferent position relative to the digital object.
 16. The system asdescribed in claim 9, wherein the instructions are further executable bythe one or more processors to receive user input of a removal gesture tothe axis of manipulation visible on the display surface that causes theactivated manipulation mode to be terminated and the axis ofmanipulation to be removed.
 17. A computer-implemented method forvisually manipulating a digital object in a digital visual manipulationenvironment, comprising: generating, by at least one computing device,an axis of manipulation for the digital object responsive to detectinguser input of an activation gesture relative to the digital objectdisplayed on a display surface, the axis of manipulation generated at aposition of the activation gesture relative to the digital object;activating, by the at least one computing device, one of multiplemanipulation modes that each indicate a different type of motion of thedigital object relative to the axis of manipulation based on a length ofthe activation gesture, the activated manipulation mode remaining activewhen the activation gesture is removed; and visually manipulating, bythe at least one computing device, the digital object relative to theaxis of manipulation responsive to receiving a manipulation gesture andbased on the activated manipulation mode.
 18. The computer-implementedmethod as described in claim 17, wherein the axis of manipulation islocked at the position of the activation gesture relative to the digitalobject after detecting removal of the activation gesture.
 19. Thecomputer-implemented method as described in claim 17, furthercomprising: generating, by the at least one computing device, the axisof manipulation at a different position relative to the digital objectresponsive to receiving user input of an unlock gesture and a subsequentreposition gesture to the axis of manipulation visible on the displaysurface, the unlock gesture enabling movement of the axis ofmanipulation, and the reposition gesture moving the axis of manipulationto the different position relative to the digital object.
 20. Thecomputer-implemented method as described in claim 17, furthercomprising: terminating, by the at least one computing device, theactivated manipulation mode and removing, by the at least one computingdevice, the axis of manipulation responsive to receiving user input of aremoval gesture to the axis of manipulation visible on the displaysurface.